package org.hawk.gwt.ppc.reflect.lang;

import java.lang.annotation.Annotation;


/**
 * Delegate to represent annotation types.
 * Since GWT processes annotations in other way than other classes all
 * annotation types are binded to module entrypoint.
 *  
 * @author alex.bereznevatiy@gmail.com
 *
 * @param <T>
 */
public class AnnotationClassDelegate<T> extends ClassDelegate<T> {

	protected AnnotationClassDelegate(Class<T> clazz) {
		super(clazz);
	}

	@Override
	public boolean isAnnotation() {
		return true;
	}
	
	protected final Class<?>[] getImplementedInterfaces() {
		return new Class[] {Annotation.class};
	}

	protected final String[] getConstructorSignatures() {
		return new String[0];
	}

	protected final String[] getFieldsSignatures() {
		return new String[0];
	}

	public final T create(Object accessor, String signature, Object[] initargs) throws Throwable {
		super.create(accessor, signature, initargs);
		return null;
	}

	public final Class<?> getFieldType(Object accessor, String name) {
		super.getFieldType(accessor, name);
		return null;
	}

	public final Object get(Object accessor, String name, Object obj) {
		super.get(accessor, name, obj);
		return null;
	}

	public final void set(Object accessor, String name, Object obj, Object value) {
		super.set(accessor, name, obj, value);
	}
}
